import request from '@/config/axios'

/** 服务类采购明细 VO */
export interface PurchaseServiceDetailSaveReqVO {
  id: number // 主键，必填
  planId: number // 采购计划ID，必填
  planNo?: string // 系统自动生成的计划编号
  purchaseType: 'SERVICE' // 采购类型，固定为SERVICE
  purchaseContent?: string // 采购内容(详细)
  servicePeriod?: string // 服务期限
  serviceLocation?: string // 服务地点
  supplierQualification?: string // 供应商资质要求
  technicalReview?: string // 技术评审单
  currentInventory?: string // 现有库存数量
  unit?: string // 单位
  estimatedQuantity?: number // 预估采购数量
  estimatedUnitPrice?: number // 预估单价(元/含税)
  totalAmount?: number // 合计
  remark?: string // 备注
}

/** 小额采购明细 VO */
export interface PurchaseMinorDetailSaveReqVO {
  id: number // 主键，必填
  planId: number // 采购计划ID，必填
  planNo?: string // 系统自动生成的计划编号
  purchaseType: 'DIRECT' | 'MINOR' // 采购类型，固定为DIRECT/MINOR
  itemName: string // 物料/服务/工程名称，必填
  unit?: string // 单位
  specModel?: string // 规格型号
  acceptanceStandard?: string // 验收标准
  originPlace?: string // 产地
  estimatedQuantity?: number // 预估采购数量
  estimatedUnitPrice?: number // 预估单价（含税/万元）
  totalAmount?: number // 合计（含税/万元）
  remark?: string // 备注
}

/** 物料采购明细 VO */
export interface PurchaseMaterialDetailSaveReqVO {
  id: number // 主键，必填
  planId: number // 采购计划ID，必填
  planNo?: string // 系统自动生成的计划编号
  purchaseType: 'MATERIAL' // 采购类型，固定为MATERIAL
  materialCode: string // 物料编码（NC编码），必填
  materialName: string // 物料名称，必填
  unit?: string // 单位
  specification?: string // 规格
  acceptanceStandard?: string // 收货标准
  brandRequirements?: string // 参考品牌
  packagingRequirements?: string // 包装要求
  estimatedQuantity?: number // 预估采购数量（年用量）
  estimatedUnitPrice?: number // 预估单价/限价（元/含税）
  totalAmount?: number // 合计
  remark?: string // 备注
}

/** 设备采购明细 VO */
export interface PurchaseEquipmentDetailSaveReqVO {
  id: number // 主键，必填
  planId: number // 采购计划ID，必填
  planNo?: string // 系统自动生成的计划编号
  purchaseType: 'EQUIPMENT' // 采购类型，固定为EQUIPMENT
  category?: string // 分类
  equipmentName: string // 设备名称，必填
  unit?: string // 单位
  parameterRequirements?: string // 参数要求
  supplierQualification?: string // 供应商资质要求
  reviewRequirements?: string // 评审点要求
  estimatedQuantity?: number // 预估采购数量
  estimatedUnitPrice?: number // 预估单价(元/含税)
  totalAmount?: number // 合计
  remark?: string // 备注
}

/** 工程采购明细 VO */
export interface PurchaseEngineeringDetailSaveReqVO {
  id: number // 主键，必填
  planId: number // 采购计划ID，必填
  planNo?: string // 系统自动生成的计划编号
  purchaseType: 'ENGINEERING' // 采购类型，固定为ENGINEERING
  purchaseContent?: string // 采购内容(详细)
  estimatedQuantity?: number // 预估采购数量
  totalPriceLimit?: number // 总价限价(万元)
  remark?: string // 备注
}

/** 采购计划主表 VO（新增/修改） */
export interface PurchasePlanSaveReqVO {
  id?: number // 主键（修改时必填）
  planName: string // 采购计划名称，必填
  planNo?: string // 系统自动生成的编号
  purchaseType: 'SERVICE' | 'EQUIPMENT' | 'ENGINEERING' | 'MATERIAL' | 'DIRECT' | 'MINOR' // 采购类型，必填
  budgetDepartmentId?: number // 预算归属部门ID
  projectName: string
  budgetDepartmentName?: string // 预算归属部门名称
  applicationDepartmentId?: number // 需求申请部门ID
  applicationDepartmentName?: string // 需求申请部门名称
  applicantId?: number // 需求申请人ID
  applicantName?: string // 需求申请人姓名
  purchaseMethod?: string // 采购方式
  warrantyPeriod?: string // 质保期/维保期
  originalContractStartTime?: string // 原合同开始时间（date-time）
  originalContractEndTime?: string // 原合同结束时间（date-time）
  originalContractAmount?: number // 原合同金额(万元)
  contractPerformance?: string // 合同履约情况
  estimatedPriceSource?: string // 预估单价来源说明
  requiredDeliveryTime?: string // 需到货时间（date-time）
  constructionTime?: string // 施工时间
  constructionStartTime?: string // 施工工期开始时间（date-time）
  constructionEndTime?: string // 施工工期结束时间（date-time）
  constructionLeader?: string // 施工负责人
  hasNonStandardParts?: boolean // 是否含非标配件（0-否 1-是）
  hasProvisionalSum?: boolean // 是否含暂列金（0-否 1-是）
  implementationTeam?: string // 实施小组分工
  negotiationMethod?: string // 谈判报价方式
  supplierSelectionPrinciple?: string // 供应商选择原则
  projectReason?: string // 项目理由及必要性
  remark?: string // 备注
  applicationStartTime?: string // 采购申请开始时间（date-time）
  applicationEndTime?: string // 采购申请结束时间（date-time）

  // 明细数组（根据采购类型必填）
  serviceDetailSaveReqVOS?: PurchaseServiceDetailSaveReqVO[] // 服务类明细（purchaseType=SERVICE时必填）
  equipmentDetailSaveReqVOS?: PurchaseEquipmentDetailSaveReqVO[] // 设备类明细（purchaseType=EQUIPMENT时必填）
  engineeringDetailSaveReqVOS?: PurchaseEngineeringDetailSaveReqVO[] // 工程类明细（purchaseType=ENGINEERING时必填）
  materialDetailSaveReqVOS?: PurchaseMaterialDetailSaveReqVO[] // 物料类明细（purchaseType=MATERIAL时必填）
  minorDetailSaveReqVOS?: PurchaseMinorDetailSaveReqVO[] // 小额类明细（purchaseType=DIRECT/MINOR时必填）
}

/** 采购计划列表/详情 VO（简化版，用于展示） */
export interface PurchasePlanVO {
  id: number // 采购计划编号
  planName: string // 计划名称
  planNo: string // 系统编号
  purchaseType: string // 采购类型
  budgetDepartmentId?: number
  budgetDepartmentName?: string
  applicationDepartmentName?: string // 申请部门
  applicantName?: string // 申请人
  createTime?: string // 创建时间
  status?: string // 计划状态（扩展字段，根据实际业务添加）
}

// ERP 采购计划 API
export const PurchasePlanApi = {
  // 查询采购计划分页
  getPurchasePlanPage: async (params: any) => {
    return await request.get({ url: `/erp/purchase-plan/page`, params })
  },
  // 查看采购计划详情
  getPurchasePlan: async (id: number) => {
    return await request.get({ url: `/erp/purchase-plan/get?id=` + id })
  },
  // 创建采购计划
  createPurchasePlan: async (data: PurchasePlanSaveReqVO) => {
    return await request.post({ url: `/erp/purchase-plan/create`, data })
  },
  // 修改采购计划
  updatePurchasePlan: async (data: PurchasePlanSaveReqVO) => {
    return await request.put({ url: `/erp/purchase-plan/update`, data })
  },
  // 删除采购计划
  delPurchasePlan: async (id: number) => {
    return await request.delete({ url: `/erp/purchase-plan/delete?id=` + id })
  },
  // 批量删除采购计划
  deletePurchasePlanList: async (ids: number[]) => {
    return await request.delete({
      url: `/erp/purchase-plan/delete-list`,
      params: {
        ids: ids.join(',')
      }
    })
  },
  // 导出采购计划Excel
  exportPurchasePlan: async (params: any) => {
    return await request.download({ url: `/erp/purchase-plan/export-excel`, params })
  },
  // 下载服务采购模板 Excel
  exportPurchasePlanServiceTemplate: async () => {
    return await request.download({ url: `/erp/purchase-plan/exportExcelTemplate/service` })
  },
  // 下载工程采购模板 Excel
  exportPurchasePlanEngineeringTemplate: async () => {
    return await request.download({ url: `/erp/purchase-plan/exportExcelTemplate/engineering` })
  },
  // 下载设备采购模板 Excel
  exportPurchasePlanEquipmentTemplate: async () => {
    return await request.download({ url: `/erp/purchase-plan/exportExcelTemplate/equipment` })
  },
  // 下载物资采购模板 Excel
  exportPurchasePlanMaterialTemplate: async () => {
    return await request.download({ url: `/erp/purchase-plan/exportExcelTemplate/material` })
  },
  // 下载小额、直接类采购模板 Excel
  exportPurchasePlanMinorTemplate: async () => {
    return await request.download({ url: `/erp/purchase-plan/exportExcelTemplate/minor` })
  }
}
